home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 23 / AACD 23.iso / AACD / Sound / RAPlay / src / decode144.h < prev    next >
C/C++ Source or Header  |  2000-12-19  |  2KB  |  65 lines

  1. #ifndef DECODE144_H
  2. #define DECODE144_H
  3.  
  4. /* internal globals */
  5. typedef struct {
  6.     unsigned int     resetflag, val, oldval;
  7.     unsigned int     unpacked[28];        /* buffer for unpacked input */
  8.     unsigned int    *iptr;                /* pointer to current input (from unpacked) */
  9.     unsigned int     gval;
  10.     unsigned short    *gsp;
  11.     unsigned int     gbuf1[8];
  12.     unsigned short     gbuf2[120];
  13.     signed   short     output_buffer[40];
  14.     unsigned int    *decptr;            /* decoder ptr */
  15.     signed   short    *decsp;
  16.  
  17.     /* the swapped buffers */
  18.     unsigned int     swapb1a[10];
  19.     unsigned int     swapb2a[10];
  20.     unsigned int     swapb1b[10];
  21.     unsigned int     swapb2b[10];
  22.     unsigned int    *swapbuf1;
  23.     unsigned int    *swapbuf2;
  24.     unsigned int    *swapbuf1alt;
  25.     unsigned int    *swapbuf2alt;
  26.  
  27.     unsigned int buffer[5];
  28.     unsigned short int buffer_2[148];
  29.     unsigned short int buffer_a[40];
  30.     unsigned short int buffer_b[40];
  31.     unsigned short int buffer_c[40];
  32.     unsigned short int buffer_d[40];
  33.  
  34.     unsigned short int work[50];
  35.     unsigned short *sptr;
  36.  
  37.     int buffer1[10];
  38.     int buffer2[10];
  39.  
  40.     signed short wavtable1[2304];
  41.     unsigned short wavtable2[2304];
  42. } Real_internal;
  43.  
  44. /* consts */
  45. #define NBLOCKS        4                /* number of segments within a block */
  46. #define BLOCKSIZE    40                /* (quarter) block size in 16-bit words (80 bytes) */
  47. #define HALFBLOCK    20                /* BLOCKSIZE/2 */
  48. #define BUFFERSIZE    146                /* for do_output */
  49.  
  50. /* prototypes */
  51. static int          t_sqrt             (unsigned int x);
  52. static void         do_voice           (int *a1, int *a2);
  53. static void         do_output_subblock (Real_internal *glob, int x);
  54. static void         rotate_block       (short *source, short *target, int offset);
  55. static int          irms               (short *data, int factor);
  56. static void         add_wav            (Real_internal *glob, int n, int f, int m1, int m2, int m3, short *s1, short *s2, short *s3, short *dest);
  57. static void         final              (Real_internal *glob, short *i1, short *i2, void *out, int *statbuf, int len);
  58. static void         unpack_input       (unsigned char *input, unsigned int *output);
  59. static unsigned int rms                (int *data, int f);
  60. static void         dec1               (Real_internal *glob, int *data, int *inp, int n, int f);
  61. static void         dec2               (Real_internal *glob, int *data, int *inp, int n, int f, int *inp2, int l);
  62. static int          eq                 (Real_internal *glob, short *in, int *target);
  63.  
  64. #endif /* !DECODE144_H */
  65.